The parent application identified above describes a new cluster architecture for high-speed computer processing systems, referred to as supercomputers. For most supercomputer applications, the objective is to provide a computer processing system with the fastest processing speed and the greatest processing flexibility, i.e., the ability to process a large variety of traditional application programs. In an effort to increase the processing speed and flexibility of supercomputers, the cluster architecture for highly parallel multiprocessors described in the previously identified parent application provides an architecture for supercomputers wherein a multiple number of processors and external interface means can make multiple and simultaneous requests to a common set of shared hardware resources, such as main memory, secondary memory, global registers, interrupt mechanisms, or other shared resources present in the system.
One of the important considerations in designing such shared resource multiprocessor systems, is how to indicate that a particular resource is presently being used by one of the processors and to provide a resource lockout mechanism so that another processor does not simultaneously use the same resource. The problem of resource lockout is further compounded by two additional factors associated with the cluster architecture for highly parallel multiprocessors that is described in the parent application identified above. First, the resource lockout mechanism must not only work with the registers and interrupt hardware for the system, it must also work on all of the locations of main memory. Second, the resource lockout mechanism must operate in a distributed environment where there is no central scheduler and where requestors other than processors (e.g., a distributed I/O controller) are also allowed direct access to shared resources without processor Intervention.
In essence, the problem of resource lockout has been managed in prior art supercomputers by assigning a single, central scheduling processor to keep track of what resources are currently being used by which processor. In a distributed access architecture, access to all shared resources is equal and democratic and there is no central scheduler. Hence, each requestor to a common shared resource must be provided with the information necessary to determine whether that resource is presently being used by another requestor in the multiprocessor system.
Present methods and systems for resource lockout mechanism for use in a shared memory, multiprocessor environment do not allow for fully distributed and democratic access to the common shared main memory by all of the possible requestors in the multiprocessor environment. Consequently, a new method and apparatus is needed that provides for an indication to all other requestors in the system when a particular shared resource is being utilized. In addition, a new method and apparatus is needed for requestors to manage their own requests for shared resource access, responsive to an indication that a resource is or is not available.